package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.OmcExpenseTypeModelCode;
import com.csun.cmny.provider.model.dto.ExpenseTypeModelCodeDto;
import com.csun.cmny.provider.model.dto.revise.GroupPaymentFeeQueryDto;
import com.csun.cmny.provider.model.vo.ExpenseTypeModelCodeVo;
import com.csun.cmny.provider.model.vo.revise.GroupPaymentFeeVo;

import java.util.List;

public interface OmcExpenseTypeModelCodeService extends IService<OmcExpenseTypeModelCode> {

    /**
     * 费用类别配置-添加
     * @param: [expenseTypeModelCodeDto, loginAuthDto]
     * @return: java.lang.Integer
     */
    Integer addExpenseTypeModelCode(List<OmcExpenseTypeModelCode> expenseTypeModelCodeList, LoginAuthDto loginAuthDto);

    /**
     * 改变(费用是否可调整)配置
     * @param: [id]
     * @return: java.lang.Integer
     */
    Integer changeIsAdjust(Long id);

    /**
     * 改变(出院是否退费)配置
     * @param: [id]
     * @return: java.lang.Integer
     */
    Integer changeIsOutReturn(Long id);

    /**
     * 改变(请假是否退费)配置
     * @param: [id]
     * @return: java.lang.Integer
     */
    Integer changeIsLeaveReturn(Long id);

    /**
     * 费用类别配置-查询
     * @param: [loginAuthDto]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.ExpenseTypeModelCodeVo>
     */
    List<ExpenseTypeModelCodeVo> queryAll(ExpenseTypeModelCodeDto expenseTypeModelCodeDto, LoginAuthDto loginAuthDto);

    /**
     * 根据项目ID和机构ID查询项目是否请假退费
     * @param itemId
     * @param groupId
     * @return
     */
    boolean isLeaveReturn( Long itemId,  Long groupId);

    /**
     * query group payment fee by group id
     *
     * @param groupPaymentFeeQueryDto   the group payment fee query dto
     *
     * @return  the list
     */
    List<GroupPaymentFeeVo> queryGroupPaymentFeeByGroupId(GroupPaymentFeeQueryDto groupPaymentFeeQueryDto);

    /**
     * 删除配置
     * @param: [id]
     * @return: java.lang.Integer
     */
    Integer deleteById(Long id);
}
